#pragma once

namespace LSH
{

typedef double TimeValue;

class Timer
{
public :
    Timer(void);
    ~Timer(void);

public:
    TimeValue   start();
    TimeValue   stop();
    void        reset();
public:    
    TimeValue   getTime();
    TimeValue   getAbsoluteTime();

protected:
    void        _initialize();
    LONGLONG    _getTicks();
private:
    bool        _timerInitialized;
    bool        _usingQPF;
    LONGLONG    _ticksPerSec;

    LONGLONG    _baseTime;
    LONGLONG    _stopTime;
};

} // LSH
